<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 1. 定义promise实例
        // let p = new Promise((res,rej)=>{
        //     setTimeout(() => {
        //         res('报名')
        //     }, 1000);
        // })

        // let p2 = p.then(val=>{
        //     console.log(val);
        //     return new Promise((res,rea)=>{
        //         setTimeout(() => {
        //             res('学习')
        //         }, 1000);
        //     })
        // })

        // // console.log(p2);
        // let p3 = p2.then(val=>{
        //     console.log(val);
        //     return new Promise((res,rej)=>{
        //         setTimeout(() => {
        //             res('简历');
        //         }, 1000);
        //     })
        // })

        // p3.then(val=>{
        //     console.log(val);
        // })

        // 1.1 设置单次定时器
        // 1.1.1 调用resolve函数
        // 2. 调用promise实例的then方法
        // 2.1 打印 resolve 参数
        // 2.2 返回新的promise实例
        // 2.2.1 设置单次定时器
        // 2.2.1.1 调用resolve函数
        // 3. 调用promise实例的then方法
        // 3.1 打印resolve参数
        // 3.2 返回新的promise实例
        // 循环往复...  

        // 4. 调用promise实例的catch方法
        // n.1 定义reject函数
        // n.2 打印reject函数的参数

        // then函数执行后的返回promise - 结果和状态 受 执行函数返回值影响。

        new Promise((res, rej) => {
            console.log(abc);
            setTimeout(() => {
                res('报名')
            }, 1000);
        }).then(val => {
            console.log(val);
            return new Promise((res, rea) => {
                setTimeout(() => {
                    res('学习')
                }, 1000);
            })
        },rea=>{
            console.log(`捕获错误`,rea);
            // return '123';
            // return new Promise((res,rej)=>{
            //     rej('失败')
            // })
        }).then(val => {
            console.log(val);
            return new Promise((res, rej) => {
                setTimeout(() => {
                    res('简历');
                }, 1000);
            })
        }).then(val => {
            console.log(val);
        })



        // 5. 过程异常处理演示 - 调用reject函数
    </script>
</body>

</html>